#-*- coding: utf-8 -*-

## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

import wx
import wx.aui
import os.path
import pythonstc

class AreaDeTrabajo:
    def __init__(self, ventana):
        self.ventana = ventana

        pinfo = wx.aui.AuiPaneInfo().Name("main").Caption("Edicion")
        pinfo.CentrePane().Centre()

        #panel = wx.Panel(ventana, -1)

        #sizer = wx.BoxSizer(wx.HORIZONTAL)
        otro_sizer = wx.BoxSizer(wx.VERTICAL)

        book = wx.aui.AuiNotebook(ventana)	

       #sizer.Add(page, 1, wx.EXPAND, 0)
       #panel.SetSizer(sizer)
	self.book = book
	self.nuevo_archivo()
	self.filename = 'sinnombre.py'
        self.dirname = '.'
        otro_sizer.Add(book, 1, wx.EXPAND, 0)
        ventana.SetSizer(otro_sizer)
        ventana._mgr.AddPane(book, pinfo)

        ventana._mgr.Update()

    def nuevo_archivo(self):
	self.page = pythonstc.PythonSTC(self.book, -1)
	self.book.AddPage(self.page, "Welcome")

    def abrir_archivo(self):
	self.CurrentPage()
	if self.askUserForFilename(style=wx.OPEN, **self.defaultFileDialogOptions()):
               textfile = open(os.path.join(self.dirname, self.filename), 'r')
               self.page.SetText(textfile.read())
               textfile.close()

    
    def guardar(self):
	'''método para guardar (no guardar como),NOTA:si se llama sin haber llamado antes a self.guardar_como, crea un 		archivo en el directorio actual, self.dirname = . '''
	self.CurrentPage()
	archivo_texto = open(os.path.join(self.dirname, self.filename), 'w')
	archivo_texto.write(self.page.GetText())
	archivo_texto.close()



    def guardar_como(self):
       self.CurrentPage()
       if self.askUserForFilename(defaultFile=self.filename, style=wx.SAVE,**self.defaultFileDialogOptions()):
          self.guardar()


	###métodos auxiliares


    def defaultFileDialogOptions(self):
        ''' Regresa un diccionario que puede ser usado en el caso de guardar y abrir archivo'''
        return dict(message='Elegir un archivo', defaultDir=self.dirname,
                       wildcard='*.*')


    def askUserForFilename(self, **dialogOptions):
	 '''función auxiliar para preguntar al usuario acerca de rutas y nombres de archivos para abrir, guardar como etc'''
         dialog=wx.FileDialog(self.ventana, **dialogOptions)
         if dialog.ShowModal() == wx.ID_OK:
             respuesta_usuario = True
             self.filename = dialog.GetFilename()
             self.dirname = dialog.GetDirectory()
             #TODO: encontrar como cambiar le nombre de la pestaña
         else:
             respuesta_usuario = False
         dialog.Destroy()
         return respuesta_usuario

    def CurrentPage(self):
	'''método para encontrar la página actual'''
	#ID_currentpage=self.book.GetSelection()		#no funciona
	##self.page = self.book.FindWindowById(ID_currentpage)   #no funciona
	#self.page=self.book.GetCapture()			#tampoco

	#TODO:hacer método para encontrar página actual je!!!

